{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notes:\n",
    " * same as run 4, fixed training bug"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/1/AstroCNNModelVetting_base_20210911_185143',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/2/AstroCNNModelVetting_base_20210911_190154',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/3/AstroCNNModelVetting_base_20210911_191202',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/4/AstroCNNModelVetting_base_20210911_192207',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/5/AstroCNNModelVetting_base_20210911_193325',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/6/AstroCNNModelVetting_base_20210911_194548',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/7/AstroCNNModelVetting_base_20210911_195706',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/8/AstroCNNModelVetting_base_20210911_201013',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/9/AstroCNNModelVetting_base_20210911_202150',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5/10/AstroCNNModelVetting_base_20210911_203331']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "chkpt_root = '/mnt/tess/astronet/checkpoints/vetting_base_2_run_5'\n",
    "data_files = '/mnt/tess/astronet/tfrecords-vetting-2-val/*'\n",
    "tces_file = '/mnt/tess/astronet/tces-vetting-v2-val.csv'\n",
    "\n",
    "nruns = 10\n",
    "\n",
    "def load_ensemble(chkpt_root, nruns):\n",
    "    checkpts = []\n",
    "    for i in range(nruns):\n",
    "        parent = os.path.join(chkpt_root, str(i + 1))\n",
    "        if not os.path.exists(parent):\n",
    "            break\n",
    "        all_dirs = os.listdir(parent)\n",
    "        if not all_dirs:\n",
    "            break\n",
    "        d, = all_dirs\n",
    "        checkpts.append(os.path.join(parent, d))\n",
    "    return checkpts\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "paths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running model 1\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 2\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 3\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 4\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 5\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 6\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 7\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 8\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 9\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 10\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n"
     ]
    }
   ],
   "source": [
    "import getpass\n",
    "import os\n",
    "from astronet import predict\n",
    "import tensorflow as tf\n",
    "\n",
    "\n",
    "def run_predictions(path):\n",
    "    predict.FLAGS = predict.parser.parse_args([\n",
    "      '--model_dir', path,\n",
    "      '--data_files', data_files,\n",
    "      '--output_file', '',\n",
    "    ])\n",
    "\n",
    "    return predict.predict()\n",
    "\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "ensemble_preds = []\n",
    "config = None\n",
    "for i, path in enumerate(paths):\n",
    "    print(f'Running model {i + 1}')\n",
    "    preds, config = run_predictions(path)\n",
    "    ensemble_preds.append(preds.set_index('tic_id'))\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = ['disp_p', 'disp_e', 'disp_n']\n",
    "\n",
    "col_p = labels.index('disp_p')\n",
    "thresh = config.hparams.prediction_threshold\n",
    "thresh = 0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "agg_preds = {}\n",
    "\n",
    "for preds in ensemble_preds:\n",
    "    for tic_id in preds.index:\n",
    "        if tic_id not in agg_preds:\n",
    "            agg_preds[tic_id] = []\n",
    "\n",
    "        row = preds[preds.index == tic_id]\n",
    "        pred_v = row.values[0]\n",
    "        if len(row.values) > 1:\n",
    "            print(f'Warning: duplicate predictions for {tic_id}')\n",
    "        if pred_v[col_p] >= thresh:\n",
    "            agg_preds[tic_id].append('disp_p')\n",
    "        else:\n",
    "            masked_v = [v if i != col_p else 0 for i, v in enumerate(pred_v)]\n",
    "            agg_preds[tic_id].append(preds.columns[np.argmax(masked_v)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "final_preds = []\n",
    "for tic_id in list(agg_preds.keys()):\n",
    "    counts = {l: 0 for l in labels}\n",
    "    for e in agg_preds[tic_id]:\n",
    "        counts[e] += 1\n",
    "    maxcount = max(counts.values())\n",
    "    counts.update({\n",
    "        'tic_id': tic_id,\n",
    "        'maxcount': maxcount,\n",
    "    })\n",
    "    final_preds.append(counts)\n",
    "    \n",
    "final_preds = pd.DataFrame(final_preds).set_index('tic_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "tce_table = pd.read_csv(tces_file, header=0).set_index('tic_id')\n",
    "tce_labels = tce_table[labels]\n",
    "\n",
    "pl = final_preds.join(tce_labels, on='tic_id', how='left', lsuffix='_p')\n",
    "\n",
    "pl.head()\n",
    "pd.set_option('display.max_columns', None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall: 0.631578947368421\n",
      "Precision: 0.3076923076923077\n"
     ]
    }
   ],
   "source": [
    "ppos = (pl['disp_p_p'] > 0)\n",
    "pos = (pl['disp_p'] > 0)\n",
    "\n",
    "pneg = (pl['disp_p_p'] == 0)\n",
    "neg = (pl['disp_p'] == 0)\n",
    "\n",
    "print('Recall:', len(pl[ppos & pos]) / len(pl[pos]))\n",
    "print('Precision:', len(pl[ppos & pos]) / len(pl[ppos]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "293962038\n",
      "29984131\n",
      "91576611\n",
      "283156726\n",
      "395171208\n",
      "127722285\n",
      "357719182\n"
     ]
    }
   ],
   "source": [
    "for i in pl[pos & pneg][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24491836\n",
      "276936320\n",
      "278866211\n",
      "280095254\n",
      "304729846\n",
      "320913313\n",
      "344978642\n",
      "384068226\n",
      "384744828\n",
      "400734328\n",
      "424876542\n",
      "61802871\n",
      "417126296\n",
      "142963071\n",
      "240460949\n",
      "76698127\n",
      "365494323\n",
      "388076435\n",
      "149854222\n",
      "250475499\n",
      "71933719\n",
      "28016860\n",
      "321828403\n",
      "332146607\n",
      "202444594\n",
      "1715469662\n",
      "1715469667\n"
     ]
    }
   ],
   "source": [
    "for i in pl[neg & ppos][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_p</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.093445</td>\n",
       "      <td>0.918335</td>\n",
       "      <td>0.013218</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.024339</td>\n",
       "      <td>0.981339</td>\n",
       "      <td>0.010257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.981861</td>\n",
       "      <td>0.021024</td>\n",
       "      <td>0.017532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001723</td>\n",
       "      <td>0.998308</td>\n",
       "      <td>0.007445</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.011490</td>\n",
       "      <td>0.991647</td>\n",
       "      <td>0.014692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001382</td>\n",
       "      <td>0.998931</td>\n",
       "      <td>0.003109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.002276</td>\n",
       "      <td>0.997468</td>\n",
       "      <td>0.007767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.034181</td>\n",
       "      <td>0.966493</td>\n",
       "      <td>0.020798</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.391938</td>\n",
       "      <td>0.600247</td>\n",
       "      <td>0.041602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.003015</td>\n",
       "      <td>0.997305</td>\n",
       "      <td>0.008283</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             disp_p    disp_e    disp_n\n",
       "tic_id                                 \n",
       "278866211  0.093445  0.918335  0.013218\n",
       "278866211  0.024339  0.981339  0.010257\n",
       "278866211  0.981861  0.021024  0.017532\n",
       "278866211  0.001723  0.998308  0.007445\n",
       "278866211  0.011490  0.991647  0.014692\n",
       "278866211  0.001382  0.998931  0.003109\n",
       "278866211  0.002276  0.997468  0.007767\n",
       "278866211  0.034181  0.966493  0.020798\n",
       "278866211  0.391938  0.600247  0.041602\n",
       "278866211  0.003015  0.997305  0.008283"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def compare(ensemble_preds, filter):\n",
    "    result = ensemble_preds[0][filter]\n",
    "    for preds in ensemble_preds[1:]:\n",
    "        result = result.append(preds[filter])\n",
    "    return result\n",
    "\n",
    "compare(ensemble_preds, preds.index == 278866211)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_p_p</th>\n",
       "      <th>disp_e_p</th>\n",
       "      <th>disp_n_p</th>\n",
       "      <th>maxcount</th>\n",
       "      <th>disp_p</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>375506058</th>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           disp_p_p  disp_e_p  disp_n_p  maxcount  disp_p  disp_e  disp_n\n",
       "tic_id                                                                   \n",
       "375506058         1         9         0         9       1       0       0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pl[pl.index == 375506058]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PR curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "tics = set(ensemble_preds[0].index.values)\n",
    "\n",
    "tic_index = {v: i for i, v in enumerate(tics)}\n",
    "\n",
    "pred_ps = np.zeros([len(ensemble_preds), len(tic_index)])\n",
    "for i, preds in enumerate(ensemble_preds):\n",
    "    for row in preds.iterrows():\n",
    "        tic, pred_p = row[0], row[1][col_p]\n",
    "        pred_ps[i][tic_index[tic]] = pred_p\n",
    "\n",
    "lbl_ps = np.zeros([len(tic_index)], dtype=np.bool)\n",
    "for row in tce_labels.iterrows():\n",
    "    tic, lbl_p = row[0], row[1]['disp_p']\n",
    "    if tic in tic_index:\n",
    "        lbl_ps[tic_index[tic]] = (lbl_p > 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_cond_pos = float(np.sum(lbl_ps))\n",
    "\n",
    "def pr_at_th(th):\n",
    "    pred_pos = np.any(pred_ps >= th, axis=0)\n",
    "    true_pos = pred_pos & lbl_ps\n",
    "    num_pred_pos = int(np.sum(pred_pos))\n",
    "    num_true_pos = int(np.sum(true_pos))\n",
    "    if num_pred_pos == 0:\n",
    "        return 1.0, 0.0\n",
    "    return float(num_true_pos) / float(num_pred_pos), float(num_true_pos) / float(num_cond_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.4167455380366304, max R: 1.0, max P: 1.0\n",
      "100% recall at: 23%, threshold: 0.0010000000000546265\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1200x740 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "ps, rs, ths = ([], [], [])\n",
    "th = np.max(pred_ps)\n",
    "while th >= 0.0:\n",
    "    p, r = pr_at_th(th)\n",
    "    if p > 0:\n",
    "        ps.append(p)\n",
    "        rs.append(r)\n",
    "    else:\n",
    "        ps.append(1.0)\n",
    "        rs.append(0.0)\n",
    "    ths.append(th)\n",
    "    th -= 0.0005\n",
    "    \n",
    "from sklearn import metrics\n",
    "\n",
    "print(f'AUC: {metrics.auc(rs, ps)}, max R: {max(rs)}, max P: {max(ps)}')\n",
    "    \n",
    "i = len(rs) - 1\n",
    "while rs[i] == 1.0:\n",
    "    i -= 1\n",
    "i += 1\n",
    "print(f'100% recall at: {int(ps[i] * 100)}%, threshold: {ths[i]}')\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.7), dpi=200)\n",
    "\n",
    "ax.spines['top'].set_color('#808080')\n",
    "ax.spines['right'].set_color('#808080')\n",
    "ax.spines['left'].set_color('#808080')\n",
    "ax.spines['bottom'].set_color('#808080')\n",
    "ax.tick_params(direction='in', color='#808080')\n",
    "\n",
    "plt.grid(color='#c0c0c0', linestyle='--', linewidth=0.5)\n",
    "\n",
    "plt.ylabel('Precision', fontweight='bold')\n",
    "plt.xlabel('Recall', fontweight='bold')\n",
    "\n",
    "plt.xlim((0.0, 1.0))\n",
    "plt.ylim((0.0, 1.0))\n",
    "\n",
    "_ = plt.plot(rs, ps)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
